#if !defined(ximera_graphics_iparticlesystem_hpp)
#define ximera_graphics_iparticlesystem_hpp

// -----------------------------------------------------------

#include <ximera/graphics/attachable.hpp>
#include <ximera/math/color.hpp>
#include <ximera/common/sharedptr.hpp>

namespace ximera { namespace graphics
{
    class XIMERA_API IParticleSystem : public Attachable
    {
    public:
        IParticleSystem(String const& name)
            : Attachable(name) {}

        virtual ~IParticleSystem();

        virtual bool visible() const = 0;
        virtual void visible(bool vis) = 0;

        virtual String materialName() const = 0;
        virtual void materialName(String const& name) = 0;

        virtual void setDefaultDimensions(Real width, Real height) = 0;

        virtual Real speedFactor() = 0;
        virtual void speedFactor(Real factor) = 0;

        virtual bool castShadows() const = 0;
        virtual void castShadows(bool casts) = 0;
    };

    typedef SharedPtr<IParticleSystem> IParticleSystemPtr;
}}

// -----------------------------------------------------------

#endif
